iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 18
0
自我挑戰組

Micropython x ESP H/W 之三十個錦囊妙計系列 第 18

[錦囊XVIII] 二進制處理方式 [下] --- pack

  • 分享至 

  • xImage
  •  

這篇將介紹如何使用struct 中的PACK 將數據轉換成二進制 並餵給MicroPython x ESP01S 使用

在MicroPython 官網中可以看到有關於BSSID的連線說明, 由於沒有範例, 真的很難知道哪種設定才是正確的作法
https://ithelp.ithome.com.tw/upload/images/20181030/20103824hcX3kgCgez.png

[實作] 連線到特定的Wi-Fi AP , 連線資訊如下:
SSID: AC66, key: 12345678, BSSID: 30:5A:3A:51:B4:48

  1. 先將BSSID提取中間的數值後存入lst_addr list中
lst_addr = "30:5A:3A:51:B4:48".split(':')
  1. 將lst_addr list中的所有數值轉成10 進制
>>> dec_lst= [int("0x%s" %(lst_addr[0]),0), int("0x%s" %(lst_addr[1]),0), int("0x%s" %(lst_addr[2]),0), int("0x%s" %(lst_addr[3]),0), int("0x%s" %(lst_addr[4]),0), int("0x%s" %(lst_addr[5]),0)]
>>> dec_lst
[48, 90, 58, 81, 180, 72]

[秘訣] struct的pack 無法吃16進制的數值, 所以才要從HEX value to DEC format
3. 將數據轉成二進制碼並存入bssid_value 變數中

>>> bssid_value=ustruct.pack('BBBBBB', dec_lst[0], dec_lst[1], dec_lst[2], dec_lst[3], dec_lst[4], dec_lst[5])
>>> 
  1. 查看轉換後的數據
>>> bssid_value
b'0Z:Q\xb4H'
  1. Enable ESP01S的Wi-Fi功能且切換到STA模式, 並連線到指定的AP
import network
nic= network.WLAN(network.STA_IF)
nic.active(True)
nic.connect('AC66', '12345678', **bssid=**bssid_value)
  1. 檢查AP設定檔是否連線到AC66
>>> nic.config('essid')
'AC66'
  1. 任務完成, 已經成功連線

上一篇
[錦囊XVII] 二進制處理方式 [上] --- unpack
下一篇
[錦囊XIV] Sleep 的種類有哪些及如何喚醒睡眠中的裝置呢?
系列文
Micropython x ESP H/W 之三十個錦囊妙計31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言